<!--********************************************************************
* Copyright© 2000 - 2025 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!--********************************************************************
* 该示例需要引入 
* Echarts (https://github.com/apache/echarts)
* echartsLayer(https://github.com/lzxue/echartsLayer)
*********************************************************************-->
<html>
<head>
    <meta charset='utf-8'/>
    <title data-i18n="resources.title_echartsLinesMillions_roads"></title>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/>
    <script type="text/javascript" include="jquery" src="../js/include-web.js"></script>
    <style>
        body {
            margin: 0;
            padding: 0;
        }

        #map {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
        }
    </style>
</head>
<body>
<div id='map'></div>
<script type="text/javascript" include="echarts" src="../../dist/mapboxgl/include-mapboxgl.js"></script>
<script type="text/javascript">
    var attribution = "<a href='https://www.mapbox.com/about/maps/' target='_blank'>© Mapbox </a>" +
        " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
        " Image <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a> | </span>" +
        " <a href='https://echarts.baidu.com' target='_blank'>© 2018 " + resources.title_3baidu + " ECharts</a>";
    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
    var tileURL = host + "/iserver/services/map-china/rest/maps/ChinaDark/zxyTileImage.png?z={z}&x={x}&y={y}";

    var map = new mapboxgl.Map({
        container: 'map',
        style: {
            "version": 8,
            "sources": {
                "raster-tiles": {
                    "attribution": attribution,
                    "type": "raster",
                    "tiles": [tileURL],
                    "tileSize": 256,
                },
            },
            "layers": [{
                "id": "simple-tiles",
                "type": "raster",
                "source": "raster-tiles",
                "minzoom": 0,
                "maxzoom": 18
            }]
        },
        center: [106, 37.94],
        zoom: 4,
        itemStyle: {
            normal: {
                color: 'transparent',
                borderColor: 'rgba(255,255,255,0.1)',
                borderWidth: 1
            }
        },
        roam: true,
        silent: true
    });
    map.addControl(new mapboxgl.NavigationControl(), 'top-left');
    var echartslayer = new EchartsLayer(map);

    var CHUNK_COUNT = 27;

    function fetchData(idx) {
        if (idx > CHUNK_COUNT) {
            return;
        }
        var dataURL = "https://iclient.supermap.io/web/data/bigdata_roads_50w/data_" + idx + ".bin";
        var xhr = new XMLHttpRequest();
        xhr.open('GET', dataURL, true);
        xhr.responseType = 'arraybuffer';

        xhr.onload = function (e) {
            var rawData = new Float32Array(this.response);
            echartslayer.chart.appendData({
                seriesIndex: 0,
                data: rawData
            });

            fetchData(idx + 1);
        };

        xhr.send();
    }

    option = {
        progressive: 20000,
        GLMap: {
            roam: true
        },
        title: {
            top: '10px',
            text: resources.text_echartsLinesMillions_roads,
            subtext: resources.text_echartsLinesMillions_roads_subtext,
            left: 'center',
            textStyle: {
                color: '#fff'
            },
            subtextStyle: {
                color: '#fff'
            }
        },
        coordinateSystem: 'GLMap',
        series: [{
            type: 'lines',
            blendMode: 'lighter',
            coordinateSystem: 'GLMap',
            dimensions: ['value'],
            data: new Float64Array(),
            polyline: true,
            large: true,
            lineStyle: {
                color: 'orange',
                width: 1,
                opacity: 0.3
            }
        }]
    };

    fetchData(0);
    echartslayer.chart.setOption(option);

</script>
</body>
</html>